<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>05_闭包面试题</title>
</head>

<body>
  <script>
    function foo(x) {
      var tmp = 3;
      return function(y) {
        console.log(x + y + (++tmp) );
      }
    }
    var bar = foo(2)(10);
    // 16




    function f1() {
      var n = 999;
      nAdd = function() {
        n += 1;
      };
      function f2() {
        console.log(n);
      };
      return f2;
    };
    var result = f1();
    console.log(result);  // f2() { console.log(n); }
    result()              // 999
    nAdd();               // 坑    作用域赋值
    result();             // 1000





    var i = 5;
    function fn(i) {
      return function(n) {
        console.log(n + (++i));
      };
    };
    var f = fn(1);
    f(2);           // 4
    f(7);           // 10  小坑 父级作用域内 i 被上一次的调用 执行了一次++i
    fn(3)(4);       // 8   小坑 重新执行了一次 fn
    fn(5)(6);       // 12
    console.log(i); // 5

  </script>
</body>

</html>
